In [14]:
!pip install tensorflow
import tensorflow as tf
Requirement already satisfied: tensorflow in e:\miniconda_files\project3\env\lib\site-packages (2.12.0) Requirement already satisfied: tensorflow-intel==2.12.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow) (2.12.0) Requirement already satisfied: absl-py>=1.0.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.4.0) Requirement already satisfied: astunparse>=1.6.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.6.3) Requirement already satisfied: flatbuffers>=2.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (23.3.3) Requirement already satisfied: gast<=0.4.0,>=0.2.1 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (0.4.0) Requirement already satisfied: google-pasta>=0.1.1 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (0.2.0) Requirement already satisfied: h5py>=2.9.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (3.8.0) Requirement already satisfied: jax>=0.3.15 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (0.4.8) Requirement already satisfied: libclang>=13.0.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (16.0.0) Requirement already satisfied: numpy<1.24,>=1.22 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.23.5) Requirement already satisfied: opt-einsum>=2.3.2 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (3.3.0) Requirement already satisfied: packaging in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (23.0) Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (4.22.3) Requirement already satisfied: setuptools in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (66.0.0) Requirement already satisfied: six>=1.12.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.16.0) Requirement already satisfied: termcolor>=1.1.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (2.2.0) Requirement already satisfied: typing-extensions>=3.6.6 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (4.4.0) Requirement already satisfied: wrapt<1.15,>=1.11.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.14.1) Requirement already satisfied: grpcio<2.0,>=1.24.3 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (1.54.0) Requirement already satisfied: tensorboard<2.13,>=2.12 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (2.12.2) Requirement already satisfied: tensorflow-estimator<2.13,>=2.12.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (2.12.0) Requirement already satisfied: keras<2.13,>=2.12.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (2.12.0) Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in e:\miniconda_files\project3\env\lib\site-packages (from tensorflow-intel==2.12.0->tensorflow) (0.31.0) Requirement already satisfied: wheel<1.0,>=0.23.0 in e:\miniconda_files\project3\env\lib\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.12.0->tensorflow) (0.38.4) Requirement already satisfied: ml-dtypes>=0.0.3 in e:\miniconda_files\project3\env\lib\site-packages (from jax>=0.3.15->tensorflow-intel==2.12.0->tensorflow) (0.1.0) Requirement already satisfied: scipy>=1.7 in e:\miniconda_files\project3\env\lib\site-packages (from jax>=0.3.15->tensorflow-intel==2.12.0->tensorflow) (1.10.1) Requirement already satisfied: google-auth<3,>=1.6.3 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2.17.3) Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (1.0.0) Requirement already satisfied: markdown>=2.6.8 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (3.4.3) Requirement already satisfied: requests<3,>=2.21.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2.28.1) Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (0.7.0) Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (1.8.1) Requirement already satisfied: werkzeug>=1.0.1 in e:\miniconda_files\project3\env\lib\site-packages (from tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2.2.3) Requirement already satisfied: cachetools<6.0,>=2.0.0 in e:\miniconda_files\project3\env\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (5.3.0) Requirement already satisfied: pyasn1-modules>=0.2.1 in e:\miniconda_files\project3\env\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (0.2.8) Requirement already satisfied: rsa<5,>=3.1.4 in e:\miniconda_files\project3\env\lib\site-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (4.9) Requirement already satisfied: requests-oauthlib>=0.7.0 in e:\miniconda_files\project3\env\lib\site-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (1.3.1) Requirement already satisfied: charset-normalizer<3,>=2 in e:\miniconda_files\project3\env\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2.0.4) Requirement already satisfied: idna<4,>=2.5 in e:\miniconda_files\project3\env\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (3.4) Requirement already satisfied: urllib3<1.27,>=1.21.1 in e:\miniconda_files\project3\env\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in e:\miniconda_files\project3\env\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2022.12.7) Requirement already satisfied: MarkupSafe>=2.1.1 in e:\miniconda_files\project3\env\lib\site-packages (from werkzeug>=1.0.1->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (2.1.1) Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in e:\miniconda_files\project3\env\lib\site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (0.4.8) Requirement already satisfied: oauthlib>=3.0.0 in e:\miniconda_files\project3\env\lib\site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.13,>=2.12->tensorflow-intel==2.12.0->tensorflow) (3.2.2)
In [15]:
print(tf.__version__)
2.12.0
In [39]:
!pip install opendatasets
import opendatasets as od
Requirement already satisfied: opendatasets in e:\miniconda_files\project3\env\lib\site-packages (0.1.22) Requirement already satisfied: tqdm in e:\miniconda_files\project3\env\lib\site-packages (from opendatasets) (4.65.0) Requirement already satisfied: kaggle in e:\miniconda_files\project3\env\lib\site-packages (from opendatasets) (1.5.13) Requirement already satisfied: click in e:\miniconda_files\project3\env\lib\site-packages (from opendatasets) (8.1.3) Requirement already satisfied: colorama in e:\miniconda_files\project3\env\lib\site-packages (from click->opendatasets) (0.4.6) Requirement already satisfied: six>=1.10 in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (1.16.0) Requirement already satisfied: certifi in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (2022.12.7) Requirement already satisfied: python-dateutil in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (2.8.2) Requirement already satisfied: requests in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (2.28.1) Requirement already satisfied: python-slugify in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (8.0.1) Requirement already satisfied: urllib3 in e:\miniconda_files\project3\env\lib\site-packages (from kaggle->opendatasets) (1.26.15) Requirement already satisfied: text-unidecode>=1.3 in e:\miniconda_files\project3\env\lib\site-packages (from python-slugify->kaggle->opendatasets) (1.3) Requirement already satisfied: charset-normalizer<3,>=2 in e:\miniconda_files\project3\env\lib\site-packages (from requests->kaggle->opendatasets) (2.0.4) Requirement already satisfied: idna<4,>=2.5 in e:\miniconda_files\project3\env\lib\site-packages (from requests->kaggle->opendatasets) (3.4)
In [55]:
import os
print('Training Folder')
for dirpath,filename,dirname in os.walk(r'E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train'):
print(f'There are {len(filename)} directories,{len(dirname)} images in {dirpath}')
Training Folder There are 34 directories,0 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train There are 0 directories,2016 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Apple___Apple_scab There are 0 directories,1987 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Apple___Black_rot There are 0 directories,1760 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Apple___Cedar_apple_rust There are 0 directories,2008 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Apple___healthy There are 0 directories,1816 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Blueberry___healthy There are 0 directories,1826 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Cherry_(including_sour)___healthy There are 0 directories,1683 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Cherry_(including_sour)___Powdery_mildew There are 0 directories,1642 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot There are 0 directories,581 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Corn_(maize)___Common_rust_ There are 0 directories,1692 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Grape___healthy There are 0 directories,1722 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Grape___Leaf_blight_(Isariopsis_Leaf_Spot) There are 0 directories,2010 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Orange___Haunglongbing_(Citrus_greening) There are 0 directories,1838 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Peach___Bacterial_spot There are 0 directories,1728 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Peach___healthy There are 0 directories,1913 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Pepper,_bell___Bacterial_spot There are 0 directories,1988 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Pepper,_bell___healthy There are 0 directories,1939 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Potato___Early_blight There are 0 directories,1824 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Potato___healthy There are 0 directories,1939 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Potato___Late_blight There are 0 directories,1781 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Raspberry___healthy There are 0 directories,2022 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Soybean___healthy There are 0 directories,1736 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Squash___Powdery_mildew There are 0 directories,1824 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Strawberry___healthy There are 0 directories,1774 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Strawberry___Leaf_scorch There are 0 directories,1702 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Bacterial_spot There are 0 directories,1920 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Early_blight There are 0 directories,1926 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___healthy There are 0 directories,1851 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Late_blight There are 0 directories,1882 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Leaf_Mold There are 0 directories,1745 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Septoria_leaf_spot There are 0 directories,1741 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Spider_mites Two-spotted_spider_mite There are 0 directories,1827 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Target_Spot There are 0 directories,1790 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Tomato_mosaic_virus There are 0 directories,1961 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\train\Tomato___Tomato_Yellow_Leaf_Curl_Virus
In [56]:
print('Testing Folder')
for dirpath,filename,dirname in os.walk(r'E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid'):
print(f'There are {len(filename)} directories,{len(dirname)} images in {dirpath}')
Testing Folder There are 27 directories,0 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid There are 0 directories,504 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Apple___Apple_scab There are 0 directories,497 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Apple___Black_rot There are 0 directories,440 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Apple___Cedar_apple_rust There are 0 directories,502 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Apple___healthy There are 0 directories,454 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Blueberry___healthy There are 0 directories,456 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Cherry_(including_sour)___healthy There are 0 directories,421 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Cherry_(including_sour)___Powdery_mildew There are 0 directories,410 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot There are 0 directories,477 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Corn_(maize)___Common_rust_ There are 0 directories,465 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Corn_(maize)___healthy There are 0 directories,477 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Corn_(maize)___Northern_Leaf_Blight There are 0 directories,472 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Grape___Black_rot There are 0 directories,480 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Grape___Esca_(Black_Measles) There are 0 directories,423 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Grape___healthy There are 0 directories,430 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Grape___Leaf_blight_(Isariopsis_Leaf_Spot) There are 0 directories,503 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Orange___Haunglongbing_(Citrus_greening) There are 0 directories,459 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Peach___Bacterial_spot There are 0 directories,432 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Peach___healthy There are 0 directories,478 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Pepper,_bell___Bacterial_spot There are 0 directories,497 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Pepper,_bell___healthy There are 0 directories,485 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Potato___Early_blight There are 0 directories,456 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Potato___healthy There are 0 directories,485 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Potato___Late_blight There are 0 directories,445 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Raspberry___healthy There are 0 directories,505 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Soybean___healthy There are 0 directories,434 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Squash___Powdery_mildew There are 0 directories,118 images in E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\New Plant Diseases Dataset(Augmented)\valid\Strawberry___healthy
In [58]:
from tensorflow.keras.preprocessing import image_dataset_from_directory
train_dir = 'E:/MINICONDA_FILES/PROJECT3/new-plant-diseases-dataset/New Plant Diseases Dataset(Augmented)/New Plant Diseases Dataset(Augmented)/train'
test_dir = 'E:/MINICONDA_FILES/PROJECT3/new-plant-diseases-dataset/New Plant Diseases Dataset(Augmented)/New Plant Diseases Dataset(Augmented)/valid'
train_data = image_dataset_from_directory(train_dir,
image_size=(224,224),
label_mode='categorical',
batch_size=32)
test_data = image_dataset_from_directory(test_dir,
image_size=(224,224),
label_mode='categorical',
batch_size=32)
Found 70295 files belonging to 38 classes. Found 17572 files belonging to 38 classes.
In [59]:
train_data,test_data
Out[59]:
(<_BatchDataset element_spec=(TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name=None), TensorSpec(shape=(None, 38), dtype=tf.float32, name=None))>, <_BatchDataset element_spec=(TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name=None), TensorSpec(shape=(None, 38), dtype=tf.float32, name=None))>)
In [60]:
class_names = train_data.class_names
class_names
Out[60]:
['Apple___Apple_scab', 'Apple___Black_rot', 'Apple___Cedar_apple_rust', 'Apple___healthy', 'Blueberry___healthy', 'Cherry_(including_sour)___Powdery_mildew', 'Cherry_(including_sour)___healthy', 'Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot', 'Corn_(maize)___Common_rust_', 'Corn_(maize)___Northern_Leaf_Blight', 'Corn_(maize)___healthy', 'Grape___Black_rot', 'Grape___Esca_(Black_Measles)', 'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)', 'Grape___healthy', 'Orange___Haunglongbing_(Citrus_greening)', 'Peach___Bacterial_spot', 'Peach___healthy', 'Pepper,_bell___Bacterial_spot', 'Pepper,_bell___healthy', 'Potato___Early_blight', 'Potato___Late_blight', 'Potato___healthy', 'Raspberry___healthy', 'Soybean___healthy', 'Squash___Powdery_mildew', 'Strawberry___Leaf_scorch', 'Strawberry___healthy', 'Tomato___Bacterial_spot', 'Tomato___Early_blight', 'Tomato___Late_blight', 'Tomato___Leaf_Mold', 'Tomato___Septoria_leaf_spot', 'Tomato___Spider_mites Two-spotted_spider_mite', 'Tomato___Target_Spot', 'Tomato___Tomato_Yellow_Leaf_Curl_Virus', 'Tomato___Tomato_mosaic_virus', 'Tomato___healthy']
In [72]:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import random
import os
def get_random_image(directory,class_names=class_names):
rn = random.randint(0,len(class_names)-1)
choice = random.choice(os.listdir(os.path.join(directory,class_names[rn])))
img_path= os.path.join(directory,class_names[rn],choice)
img = mpimg.imread(img_path)
plt.imshow(img)
fontsize=10
plt.title(class_names[rn],fontdict={'fontsize': fontsize})
plt.axis(False)
In [73]:
plt.figure(figsize=(10,8))
for i in range(9):
plt.subplot(3,3,i+1)
get_random_image(train_dir)
In [64]:
import tensorflow as tf
from tensorflow.keras import layers
image_shape = (224,224,3)
base_model = tf.keras.applications.EfficientNetB0(include_top=False,)
base_model.trainable = False
inputs = layers.Input(shape = image_shape,name='input_layer')
x = base_model(inputs)
x = layers.GlobalAveragePooling2D(name='GlobalAveragePooling2D_layer')(x)
outputs = layers.Dense(38,activation='softmax',name='output_layer')(x)
feature_model = tf.keras.Model(inputs,outputs,name='plant_disease_model')
In [66]:
base_model.trainable = True
for layer in base_model.layers[:-20]:
layer.trainable = False
feature_model.compile(loss='categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(),
metrics=['accuracy'])
In [67]:
base_model.summary()
Model: "efficientnetb0"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_2 (InputLayer) [(None, None, None, 0 []
3)]
rescaling_2 (Rescaling) (None, None, None, 0 ['input_2[0][0]']
3)
normalization_1 (Normalization (None, None, None, 7 ['rescaling_2[0][0]']
) 3)
rescaling_3 (Rescaling) (None, None, None, 0 ['normalization_1[0][0]']
3)
stem_conv_pad (ZeroPadding2D) (None, None, None, 0 ['rescaling_3[0][0]']
3)
stem_conv (Conv2D) (None, None, None, 864 ['stem_conv_pad[0][0]']
32)
stem_bn (BatchNormalization) (None, None, None, 128 ['stem_conv[0][0]']
32)
stem_activation (Activation) (None, None, None, 0 ['stem_bn[0][0]']
32)
block1a_dwconv (DepthwiseConv2 (None, None, None, 288 ['stem_activation[0][0]']
D) 32)
block1a_bn (BatchNormalization (None, None, None, 128 ['block1a_dwconv[0][0]']
) 32)
block1a_activation (Activation (None, None, None, 0 ['block1a_bn[0][0]']
) 32)
block1a_se_squeeze (GlobalAver (None, 32) 0 ['block1a_activation[0][0]']
agePooling2D)
block1a_se_reshape (Reshape) (None, 1, 1, 32) 0 ['block1a_se_squeeze[0][0]']
block1a_se_reduce (Conv2D) (None, 1, 1, 8) 264 ['block1a_se_reshape[0][0]']
block1a_se_expand (Conv2D) (None, 1, 1, 32) 288 ['block1a_se_reduce[0][0]']
block1a_se_excite (Multiply) (None, None, None, 0 ['block1a_activation[0][0]',
32) 'block1a_se_expand[0][0]']
block1a_project_conv (Conv2D) (None, None, None, 512 ['block1a_se_excite[0][0]']
16)
block1a_project_bn (BatchNorma (None, None, None, 64 ['block1a_project_conv[0][0]']
lization) 16)
block2a_expand_conv (Conv2D) (None, None, None, 1536 ['block1a_project_bn[0][0]']
96)
block2a_expand_bn (BatchNormal (None, None, None, 384 ['block2a_expand_conv[0][0]']
ization) 96)
block2a_expand_activation (Act (None, None, None, 0 ['block2a_expand_bn[0][0]']
ivation) 96)
block2a_dwconv_pad (ZeroPaddin (None, None, None, 0 ['block2a_expand_activation[0][0]
g2D) 96) ']
block2a_dwconv (DepthwiseConv2 (None, None, None, 864 ['block2a_dwconv_pad[0][0]']
D) 96)
block2a_bn (BatchNormalization (None, None, None, 384 ['block2a_dwconv[0][0]']
) 96)
block2a_activation (Activation (None, None, None, 0 ['block2a_bn[0][0]']
) 96)
block2a_se_squeeze (GlobalAver (None, 96) 0 ['block2a_activation[0][0]']
agePooling2D)
block2a_se_reshape (Reshape) (None, 1, 1, 96) 0 ['block2a_se_squeeze[0][0]']
block2a_se_reduce (Conv2D) (None, 1, 1, 4) 388 ['block2a_se_reshape[0][0]']
block2a_se_expand (Conv2D) (None, 1, 1, 96) 480 ['block2a_se_reduce[0][0]']
block2a_se_excite (Multiply) (None, None, None, 0 ['block2a_activation[0][0]',
96) 'block2a_se_expand[0][0]']
block2a_project_conv (Conv2D) (None, None, None, 2304 ['block2a_se_excite[0][0]']
24)
block2a_project_bn (BatchNorma (None, None, None, 96 ['block2a_project_conv[0][0]']
lization) 24)
block2b_expand_conv (Conv2D) (None, None, None, 3456 ['block2a_project_bn[0][0]']
144)
block2b_expand_bn (BatchNormal (None, None, None, 576 ['block2b_expand_conv[0][0]']
ization) 144)
block2b_expand_activation (Act (None, None, None, 0 ['block2b_expand_bn[0][0]']
ivation) 144)
block2b_dwconv (DepthwiseConv2 (None, None, None, 1296 ['block2b_expand_activation[0][0]
D) 144) ']
block2b_bn (BatchNormalization (None, None, None, 576 ['block2b_dwconv[0][0]']
) 144)
block2b_activation (Activation (None, None, None, 0 ['block2b_bn[0][0]']
) 144)
block2b_se_squeeze (GlobalAver (None, 144) 0 ['block2b_activation[0][0]']
agePooling2D)
block2b_se_reshape (Reshape) (None, 1, 1, 144) 0 ['block2b_se_squeeze[0][0]']
block2b_se_reduce (Conv2D) (None, 1, 1, 6) 870 ['block2b_se_reshape[0][0]']
block2b_se_expand (Conv2D) (None, 1, 1, 144) 1008 ['block2b_se_reduce[0][0]']
block2b_se_excite (Multiply) (None, None, None, 0 ['block2b_activation[0][0]',
144) 'block2b_se_expand[0][0]']
block2b_project_conv (Conv2D) (None, None, None, 3456 ['block2b_se_excite[0][0]']
24)
block2b_project_bn (BatchNorma (None, None, None, 96 ['block2b_project_conv[0][0]']
lization) 24)
block2b_drop (Dropout) (None, None, None, 0 ['block2b_project_bn[0][0]']
24)
block2b_add (Add) (None, None, None, 0 ['block2b_drop[0][0]',
24) 'block2a_project_bn[0][0]']
block3a_expand_conv (Conv2D) (None, None, None, 3456 ['block2b_add[0][0]']
144)
block3a_expand_bn (BatchNormal (None, None, None, 576 ['block3a_expand_conv[0][0]']
ization) 144)
block3a_expand_activation (Act (None, None, None, 0 ['block3a_expand_bn[0][0]']
ivation) 144)
block3a_dwconv_pad (ZeroPaddin (None, None, None, 0 ['block3a_expand_activation[0][0]
g2D) 144) ']
block3a_dwconv (DepthwiseConv2 (None, None, None, 3600 ['block3a_dwconv_pad[0][0]']
D) 144)
block3a_bn (BatchNormalization (None, None, None, 576 ['block3a_dwconv[0][0]']
) 144)
block3a_activation (Activation (None, None, None, 0 ['block3a_bn[0][0]']
) 144)
block3a_se_squeeze (GlobalAver (None, 144) 0 ['block3a_activation[0][0]']
agePooling2D)
block3a_se_reshape (Reshape) (None, 1, 1, 144) 0 ['block3a_se_squeeze[0][0]']
block3a_se_reduce (Conv2D) (None, 1, 1, 6) 870 ['block3a_se_reshape[0][0]']
block3a_se_expand (Conv2D) (None, 1, 1, 144) 1008 ['block3a_se_reduce[0][0]']
block3a_se_excite (Multiply) (None, None, None, 0 ['block3a_activation[0][0]',
144) 'block3a_se_expand[0][0]']
block3a_project_conv (Conv2D) (None, None, None, 5760 ['block3a_se_excite[0][0]']
40)
block3a_project_bn (BatchNorma (None, None, None, 160 ['block3a_project_conv[0][0]']
lization) 40)
block3b_expand_conv (Conv2D) (None, None, None, 9600 ['block3a_project_bn[0][0]']
240)
block3b_expand_bn (BatchNormal (None, None, None, 960 ['block3b_expand_conv[0][0]']
ization) 240)
block3b_expand_activation (Act (None, None, None, 0 ['block3b_expand_bn[0][0]']
ivation) 240)
block3b_dwconv (DepthwiseConv2 (None, None, None, 6000 ['block3b_expand_activation[0][0]
D) 240) ']
block3b_bn (BatchNormalization (None, None, None, 960 ['block3b_dwconv[0][0]']
) 240)
block3b_activation (Activation (None, None, None, 0 ['block3b_bn[0][0]']
) 240)
block3b_se_squeeze (GlobalAver (None, 240) 0 ['block3b_activation[0][0]']
agePooling2D)
block3b_se_reshape (Reshape) (None, 1, 1, 240) 0 ['block3b_se_squeeze[0][0]']
block3b_se_reduce (Conv2D) (None, 1, 1, 10) 2410 ['block3b_se_reshape[0][0]']
block3b_se_expand (Conv2D) (None, 1, 1, 240) 2640 ['block3b_se_reduce[0][0]']
block3b_se_excite (Multiply) (None, None, None, 0 ['block3b_activation[0][0]',
240) 'block3b_se_expand[0][0]']
block3b_project_conv (Conv2D) (None, None, None, 9600 ['block3b_se_excite[0][0]']
40)
block3b_project_bn (BatchNorma (None, None, None, 160 ['block3b_project_conv[0][0]']
lization) 40)
block3b_drop (Dropout) (None, None, None, 0 ['block3b_project_bn[0][0]']
40)
block3b_add (Add) (None, None, None, 0 ['block3b_drop[0][0]',
40) 'block3a_project_bn[0][0]']
block4a_expand_conv (Conv2D) (None, None, None, 9600 ['block3b_add[0][0]']
240)
block4a_expand_bn (BatchNormal (None, None, None, 960 ['block4a_expand_conv[0][0]']
ization) 240)
block4a_expand_activation (Act (None, None, None, 0 ['block4a_expand_bn[0][0]']
ivation) 240)
block4a_dwconv_pad (ZeroPaddin (None, None, None, 0 ['block4a_expand_activation[0][0]
g2D) 240) ']
block4a_dwconv (DepthwiseConv2 (None, None, None, 2160 ['block4a_dwconv_pad[0][0]']
D) 240)
block4a_bn (BatchNormalization (None, None, None, 960 ['block4a_dwconv[0][0]']
) 240)
block4a_activation (Activation (None, None, None, 0 ['block4a_bn[0][0]']
) 240)
block4a_se_squeeze (GlobalAver (None, 240) 0 ['block4a_activation[0][0]']
agePooling2D)
block4a_se_reshape (Reshape) (None, 1, 1, 240) 0 ['block4a_se_squeeze[0][0]']
block4a_se_reduce (Conv2D) (None, 1, 1, 10) 2410 ['block4a_se_reshape[0][0]']
block4a_se_expand (Conv2D) (None, 1, 1, 240) 2640 ['block4a_se_reduce[0][0]']
block4a_se_excite (Multiply) (None, None, None, 0 ['block4a_activation[0][0]',
240) 'block4a_se_expand[0][0]']
block4a_project_conv (Conv2D) (None, None, None, 19200 ['block4a_se_excite[0][0]']
80)
block4a_project_bn (BatchNorma (None, None, None, 320 ['block4a_project_conv[0][0]']
lization) 80)
block4b_expand_conv (Conv2D) (None, None, None, 38400 ['block4a_project_bn[0][0]']
480)
block4b_expand_bn (BatchNormal (None, None, None, 1920 ['block4b_expand_conv[0][0]']
ization) 480)
block4b_expand_activation (Act (None, None, None, 0 ['block4b_expand_bn[0][0]']
ivation) 480)
block4b_dwconv (DepthwiseConv2 (None, None, None, 4320 ['block4b_expand_activation[0][0]
D) 480) ']
block4b_bn (BatchNormalization (None, None, None, 1920 ['block4b_dwconv[0][0]']
) 480)
block4b_activation (Activation (None, None, None, 0 ['block4b_bn[0][0]']
) 480)
block4b_se_squeeze (GlobalAver (None, 480) 0 ['block4b_activation[0][0]']
agePooling2D)
block4b_se_reshape (Reshape) (None, 1, 1, 480) 0 ['block4b_se_squeeze[0][0]']
block4b_se_reduce (Conv2D) (None, 1, 1, 20) 9620 ['block4b_se_reshape[0][0]']
block4b_se_expand (Conv2D) (None, 1, 1, 480) 10080 ['block4b_se_reduce[0][0]']
block4b_se_excite (Multiply) (None, None, None, 0 ['block4b_activation[0][0]',
480) 'block4b_se_expand[0][0]']
block4b_project_conv (Conv2D) (None, None, None, 38400 ['block4b_se_excite[0][0]']
80)
block4b_project_bn (BatchNorma (None, None, None, 320 ['block4b_project_conv[0][0]']
lization) 80)
block4b_drop (Dropout) (None, None, None, 0 ['block4b_project_bn[0][0]']
80)
block4b_add (Add) (None, None, None, 0 ['block4b_drop[0][0]',
80) 'block4a_project_bn[0][0]']
block4c_expand_conv (Conv2D) (None, None, None, 38400 ['block4b_add[0][0]']
480)
block4c_expand_bn (BatchNormal (None, None, None, 1920 ['block4c_expand_conv[0][0]']
ization) 480)
block4c_expand_activation (Act (None, None, None, 0 ['block4c_expand_bn[0][0]']
ivation) 480)
block4c_dwconv (DepthwiseConv2 (None, None, None, 4320 ['block4c_expand_activation[0][0]
D) 480) ']
block4c_bn (BatchNormalization (None, None, None, 1920 ['block4c_dwconv[0][0]']
) 480)
block4c_activation (Activation (None, None, None, 0 ['block4c_bn[0][0]']
) 480)
block4c_se_squeeze (GlobalAver (None, 480) 0 ['block4c_activation[0][0]']
agePooling2D)
block4c_se_reshape (Reshape) (None, 1, 1, 480) 0 ['block4c_se_squeeze[0][0]']
block4c_se_reduce (Conv2D) (None, 1, 1, 20) 9620 ['block4c_se_reshape[0][0]']
block4c_se_expand (Conv2D) (None, 1, 1, 480) 10080 ['block4c_se_reduce[0][0]']
block4c_se_excite (Multiply) (None, None, None, 0 ['block4c_activation[0][0]',
480) 'block4c_se_expand[0][0]']
block4c_project_conv (Conv2D) (None, None, None, 38400 ['block4c_se_excite[0][0]']
80)
block4c_project_bn (BatchNorma (None, None, None, 320 ['block4c_project_conv[0][0]']
lization) 80)
block4c_drop (Dropout) (None, None, None, 0 ['block4c_project_bn[0][0]']
80)
block4c_add (Add) (None, None, None, 0 ['block4c_drop[0][0]',
80) 'block4b_add[0][0]']
block5a_expand_conv (Conv2D) (None, None, None, 38400 ['block4c_add[0][0]']
480)
block5a_expand_bn (BatchNormal (None, None, None, 1920 ['block5a_expand_conv[0][0]']
ization) 480)
block5a_expand_activation (Act (None, None, None, 0 ['block5a_expand_bn[0][0]']
ivation) 480)
block5a_dwconv (DepthwiseConv2 (None, None, None, 12000 ['block5a_expand_activation[0][0]
D) 480) ']
block5a_bn (BatchNormalization (None, None, None, 1920 ['block5a_dwconv[0][0]']
) 480)
block5a_activation (Activation (None, None, None, 0 ['block5a_bn[0][0]']
) 480)
block5a_se_squeeze (GlobalAver (None, 480) 0 ['block5a_activation[0][0]']
agePooling2D)
block5a_se_reshape (Reshape) (None, 1, 1, 480) 0 ['block5a_se_squeeze[0][0]']
block5a_se_reduce (Conv2D) (None, 1, 1, 20) 9620 ['block5a_se_reshape[0][0]']
block5a_se_expand (Conv2D) (None, 1, 1, 480) 10080 ['block5a_se_reduce[0][0]']
block5a_se_excite (Multiply) (None, None, None, 0 ['block5a_activation[0][0]',
480) 'block5a_se_expand[0][0]']
block5a_project_conv (Conv2D) (None, None, None, 53760 ['block5a_se_excite[0][0]']
112)
block5a_project_bn (BatchNorma (None, None, None, 448 ['block5a_project_conv[0][0]']
lization) 112)
block5b_expand_conv (Conv2D) (None, None, None, 75264 ['block5a_project_bn[0][0]']
672)
block5b_expand_bn (BatchNormal (None, None, None, 2688 ['block5b_expand_conv[0][0]']
ization) 672)
block5b_expand_activation (Act (None, None, None, 0 ['block5b_expand_bn[0][0]']
ivation) 672)
block5b_dwconv (DepthwiseConv2 (None, None, None, 16800 ['block5b_expand_activation[0][0]
D) 672) ']
block5b_bn (BatchNormalization (None, None, None, 2688 ['block5b_dwconv[0][0]']
) 672)
block5b_activation (Activation (None, None, None, 0 ['block5b_bn[0][0]']
) 672)
block5b_se_squeeze (GlobalAver (None, 672) 0 ['block5b_activation[0][0]']
agePooling2D)
block5b_se_reshape (Reshape) (None, 1, 1, 672) 0 ['block5b_se_squeeze[0][0]']
block5b_se_reduce (Conv2D) (None, 1, 1, 28) 18844 ['block5b_se_reshape[0][0]']
block5b_se_expand (Conv2D) (None, 1, 1, 672) 19488 ['block5b_se_reduce[0][0]']
block5b_se_excite (Multiply) (None, None, None, 0 ['block5b_activation[0][0]',
672) 'block5b_se_expand[0][0]']
block5b_project_conv (Conv2D) (None, None, None, 75264 ['block5b_se_excite[0][0]']
112)
block5b_project_bn (BatchNorma (None, None, None, 448 ['block5b_project_conv[0][0]']
lization) 112)
block5b_drop (Dropout) (None, None, None, 0 ['block5b_project_bn[0][0]']
112)
block5b_add (Add) (None, None, None, 0 ['block5b_drop[0][0]',
112) 'block5a_project_bn[0][0]']
block5c_expand_conv (Conv2D) (None, None, None, 75264 ['block5b_add[0][0]']
672)
block5c_expand_bn (BatchNormal (None, None, None, 2688 ['block5c_expand_conv[0][0]']
ization) 672)
block5c_expand_activation (Act (None, None, None, 0 ['block5c_expand_bn[0][0]']
ivation) 672)
block5c_dwconv (DepthwiseConv2 (None, None, None, 16800 ['block5c_expand_activation[0][0]
D) 672) ']
block5c_bn (BatchNormalization (None, None, None, 2688 ['block5c_dwconv[0][0]']
) 672)
block5c_activation (Activation (None, None, None, 0 ['block5c_bn[0][0]']
) 672)
block5c_se_squeeze (GlobalAver (None, 672) 0 ['block5c_activation[0][0]']
agePooling2D)
block5c_se_reshape (Reshape) (None, 1, 1, 672) 0 ['block5c_se_squeeze[0][0]']
block5c_se_reduce (Conv2D) (None, 1, 1, 28) 18844 ['block5c_se_reshape[0][0]']
block5c_se_expand (Conv2D) (None, 1, 1, 672) 19488 ['block5c_se_reduce[0][0]']
block5c_se_excite (Multiply) (None, None, None, 0 ['block5c_activation[0][0]',
672) 'block5c_se_expand[0][0]']
block5c_project_conv (Conv2D) (None, None, None, 75264 ['block5c_se_excite[0][0]']
112)
block5c_project_bn (BatchNorma (None, None, None, 448 ['block5c_project_conv[0][0]']
lization) 112)
block5c_drop (Dropout) (None, None, None, 0 ['block5c_project_bn[0][0]']
112)
block5c_add (Add) (None, None, None, 0 ['block5c_drop[0][0]',
112) 'block5b_add[0][0]']
block6a_expand_conv (Conv2D) (None, None, None, 75264 ['block5c_add[0][0]']
672)
block6a_expand_bn (BatchNormal (None, None, None, 2688 ['block6a_expand_conv[0][0]']
ization) 672)
block6a_expand_activation (Act (None, None, None, 0 ['block6a_expand_bn[0][0]']
ivation) 672)
block6a_dwconv_pad (ZeroPaddin (None, None, None, 0 ['block6a_expand_activation[0][0]
g2D) 672) ']
block6a_dwconv (DepthwiseConv2 (None, None, None, 16800 ['block6a_dwconv_pad[0][0]']
D) 672)
block6a_bn (BatchNormalization (None, None, None, 2688 ['block6a_dwconv[0][0]']
) 672)
block6a_activation (Activation (None, None, None, 0 ['block6a_bn[0][0]']
) 672)
block6a_se_squeeze (GlobalAver (None, 672) 0 ['block6a_activation[0][0]']
agePooling2D)
block6a_se_reshape (Reshape) (None, 1, 1, 672) 0 ['block6a_se_squeeze[0][0]']
block6a_se_reduce (Conv2D) (None, 1, 1, 28) 18844 ['block6a_se_reshape[0][0]']
block6a_se_expand (Conv2D) (None, 1, 1, 672) 19488 ['block6a_se_reduce[0][0]']
block6a_se_excite (Multiply) (None, None, None, 0 ['block6a_activation[0][0]',
672) 'block6a_se_expand[0][0]']
block6a_project_conv (Conv2D) (None, None, None, 129024 ['block6a_se_excite[0][0]']
192)
block6a_project_bn (BatchNorma (None, None, None, 768 ['block6a_project_conv[0][0]']
lization) 192)
block6b_expand_conv (Conv2D) (None, None, None, 221184 ['block6a_project_bn[0][0]']
1152)
block6b_expand_bn (BatchNormal (None, None, None, 4608 ['block6b_expand_conv[0][0]']
ization) 1152)
block6b_expand_activation (Act (None, None, None, 0 ['block6b_expand_bn[0][0]']
ivation) 1152)
block6b_dwconv (DepthwiseConv2 (None, None, None, 28800 ['block6b_expand_activation[0][0]
D) 1152) ']
block6b_bn (BatchNormalization (None, None, None, 4608 ['block6b_dwconv[0][0]']
) 1152)
block6b_activation (Activation (None, None, None, 0 ['block6b_bn[0][0]']
) 1152)
block6b_se_squeeze (GlobalAver (None, 1152) 0 ['block6b_activation[0][0]']
agePooling2D)
block6b_se_reshape (Reshape) (None, 1, 1, 1152) 0 ['block6b_se_squeeze[0][0]']
block6b_se_reduce (Conv2D) (None, 1, 1, 48) 55344 ['block6b_se_reshape[0][0]']
block6b_se_expand (Conv2D) (None, 1, 1, 1152) 56448 ['block6b_se_reduce[0][0]']
block6b_se_excite (Multiply) (None, None, None, 0 ['block6b_activation[0][0]',
1152) 'block6b_se_expand[0][0]']
block6b_project_conv (Conv2D) (None, None, None, 221184 ['block6b_se_excite[0][0]']
192)
block6b_project_bn (BatchNorma (None, None, None, 768 ['block6b_project_conv[0][0]']
lization) 192)
block6b_drop (Dropout) (None, None, None, 0 ['block6b_project_bn[0][0]']
192)
block6b_add (Add) (None, None, None, 0 ['block6b_drop[0][0]',
192) 'block6a_project_bn[0][0]']
block6c_expand_conv (Conv2D) (None, None, None, 221184 ['block6b_add[0][0]']
1152)
block6c_expand_bn (BatchNormal (None, None, None, 4608 ['block6c_expand_conv[0][0]']
ization) 1152)
block6c_expand_activation (Act (None, None, None, 0 ['block6c_expand_bn[0][0]']
ivation) 1152)
block6c_dwconv (DepthwiseConv2 (None, None, None, 28800 ['block6c_expand_activation[0][0]
D) 1152) ']
block6c_bn (BatchNormalization (None, None, None, 4608 ['block6c_dwconv[0][0]']
) 1152)
block6c_activation (Activation (None, None, None, 0 ['block6c_bn[0][0]']
) 1152)
block6c_se_squeeze (GlobalAver (None, 1152) 0 ['block6c_activation[0][0]']
agePooling2D)
block6c_se_reshape (Reshape) (None, 1, 1, 1152) 0 ['block6c_se_squeeze[0][0]']
block6c_se_reduce (Conv2D) (None, 1, 1, 48) 55344 ['block6c_se_reshape[0][0]']
block6c_se_expand (Conv2D) (None, 1, 1, 1152) 56448 ['block6c_se_reduce[0][0]']
block6c_se_excite (Multiply) (None, None, None, 0 ['block6c_activation[0][0]',
1152) 'block6c_se_expand[0][0]']
block6c_project_conv (Conv2D) (None, None, None, 221184 ['block6c_se_excite[0][0]']
192)
block6c_project_bn (BatchNorma (None, None, None, 768 ['block6c_project_conv[0][0]']
lization) 192)
block6c_drop (Dropout) (None, None, None, 0 ['block6c_project_bn[0][0]']
192)
block6c_add (Add) (None, None, None, 0 ['block6c_drop[0][0]',
192) 'block6b_add[0][0]']
block6d_expand_conv (Conv2D) (None, None, None, 221184 ['block6c_add[0][0]']
1152)
block6d_expand_bn (BatchNormal (None, None, None, 4608 ['block6d_expand_conv[0][0]']
ization) 1152)
block6d_expand_activation (Act (None, None, None, 0 ['block6d_expand_bn[0][0]']
ivation) 1152)
block6d_dwconv (DepthwiseConv2 (None, None, None, 28800 ['block6d_expand_activation[0][0]
D) 1152) ']
block6d_bn (BatchNormalization (None, None, None, 4608 ['block6d_dwconv[0][0]']
) 1152)
block6d_activation (Activation (None, None, None, 0 ['block6d_bn[0][0]']
) 1152)
block6d_se_squeeze (GlobalAver (None, 1152) 0 ['block6d_activation[0][0]']
agePooling2D)
block6d_se_reshape (Reshape) (None, 1, 1, 1152) 0 ['block6d_se_squeeze[0][0]']
block6d_se_reduce (Conv2D) (None, 1, 1, 48) 55344 ['block6d_se_reshape[0][0]']
block6d_se_expand (Conv2D) (None, 1, 1, 1152) 56448 ['block6d_se_reduce[0][0]']
block6d_se_excite (Multiply) (None, None, None, 0 ['block6d_activation[0][0]',
1152) 'block6d_se_expand[0][0]']
block6d_project_conv (Conv2D) (None, None, None, 221184 ['block6d_se_excite[0][0]']
192)
block6d_project_bn (BatchNorma (None, None, None, 768 ['block6d_project_conv[0][0]']
lization) 192)
block6d_drop (Dropout) (None, None, None, 0 ['block6d_project_bn[0][0]']
192)
block6d_add (Add) (None, None, None, 0 ['block6d_drop[0][0]',
192) 'block6c_add[0][0]']
block7a_expand_conv (Conv2D) (None, None, None, 221184 ['block6d_add[0][0]']
1152)
block7a_expand_bn (BatchNormal (None, None, None, 4608 ['block7a_expand_conv[0][0]']
ization) 1152)
block7a_expand_activation (Act (None, None, None, 0 ['block7a_expand_bn[0][0]']
ivation) 1152)
block7a_dwconv (DepthwiseConv2 (None, None, None, 10368 ['block7a_expand_activation[0][0]
D) 1152) ']
block7a_bn (BatchNormalization (None, None, None, 4608 ['block7a_dwconv[0][0]']
) 1152)
block7a_activation (Activation (None, None, None, 0 ['block7a_bn[0][0]']
) 1152)
block7a_se_squeeze (GlobalAver (None, 1152) 0 ['block7a_activation[0][0]']
agePooling2D)
block7a_se_reshape (Reshape) (None, 1, 1, 1152) 0 ['block7a_se_squeeze[0][0]']
block7a_se_reduce (Conv2D) (None, 1, 1, 48) 55344 ['block7a_se_reshape[0][0]']
block7a_se_expand (Conv2D) (None, 1, 1, 1152) 56448 ['block7a_se_reduce[0][0]']
block7a_se_excite (Multiply) (None, None, None, 0 ['block7a_activation[0][0]',
1152) 'block7a_se_expand[0][0]']
block7a_project_conv (Conv2D) (None, None, None, 368640 ['block7a_se_excite[0][0]']
320)
block7a_project_bn (BatchNorma (None, None, None, 1280 ['block7a_project_conv[0][0]']
lization) 320)
top_conv (Conv2D) (None, None, None, 409600 ['block7a_project_bn[0][0]']
1280)
top_bn (BatchNormalization) (None, None, None, 5120 ['top_conv[0][0]']
1280)
top_activation (Activation) (None, None, None, 0 ['top_bn[0][0]']
1280)
==================================================================================================
Total params: 4,049,571
Trainable params: 1,350,960
Non-trainable params: 2,698,611
__________________________________________________________________________________________________
In [68]:
import datetime
def create_tensorboard_callback(dir_name, experiment_name):
log_dir = dir_name + "/" + experiment_name + "/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir=log_dir
)
print(f"Saving TensorBoard log files to: {log_dir}")
return tensorboard_callback
In [69]:
early_stopping = tf.keras.callbacks.EarlyStopping(monitor="val_loss",
patience=3)
reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor="val_loss",
factor=0.2,
patience=2,
verbose=1,
min_lr=1e-7)
checkpoint_path = "fine_tune_checkpoints/"
model_checkpoint = tf.keras.callbacks.ModelCheckpoint(checkpoint_path,
save_weights_only=True,
save_best_only=True,
monitor="val_loss")
In [75]:
initial_epochs = 50
history1 = feature_model.fit(train_data,epochs=initial_epochs,
steps_per_epoch=len(train_data),
validation_data=test_data,
validation_steps=len(test_data),
callbacks=[early_stopping,
model_checkpoint,
reduce_lr,
create_tensorboard_callback('plant_disease_model',
'EfficientNetB010')])
Saving TensorBoard log files to: plant_disease_model/EfficientNetB010/20230420-002259 WARNING:tensorflow:Model failed to serialize as JSON. Ignoring... Unable to serialize [2.0896919 2.1128857 2.1081853] to JSON. Unrecognized type <class 'tensorflow.python.framework.ops.EagerTensor'>. Epoch 1/50 2197/2197 [==============================] - 2032s 925ms/step - loss: 0.0262 - accuracy: 0.9915 - val_loss: 0.0486 - val_accuracy: 0.9858 - lr: 0.0010 Epoch 2/50 2197/2197 [==============================] - 1926s 877ms/step - loss: 0.0201 - accuracy: 0.9932 - val_loss: 0.0337 - val_accuracy: 0.9894 - lr: 0.0010 Epoch 3/50 2197/2197 [==============================] - 1917s 873ms/step - loss: 0.0176 - accuracy: 0.9943 - val_loss: 0.0222 - val_accuracy: 0.9937 - lr: 0.0010 Epoch 4/50 2197/2197 [==============================] - 1915s 872ms/step - loss: 0.0152 - accuracy: 0.9951 - val_loss: 0.0295 - val_accuracy: 0.9910 - lr: 0.0010 Epoch 5/50 2197/2197 [==============================] - ETA: 0s - loss: 0.0135 - accuracy: 0.9955 Epoch 5: ReduceLROnPlateau reducing learning rate to 0.00020000000949949026. 2197/2197 [==============================] - 1924s 876ms/step - loss: 0.0135 - accuracy: 0.9955 - val_loss: 0.0224 - val_accuracy: 0.9935 - lr: 0.0010 Epoch 6/50 2197/2197 [==============================] - 1926s 877ms/step - loss: 0.0045 - accuracy: 0.9986 - val_loss: 0.0095 - val_accuracy: 0.9971 - lr: 2.0000e-04 Epoch 7/50 2197/2197 [==============================] - 1927s 877ms/step - loss: 0.0020 - accuracy: 0.9993 - val_loss: 0.0086 - val_accuracy: 0.9974 - lr: 2.0000e-04 Epoch 8/50 2197/2197 [==============================] - 1939s 883ms/step - loss: 0.0015 - accuracy: 0.9996 - val_loss: 0.0073 - val_accuracy: 0.9984 - lr: 2.0000e-04 Epoch 9/50 2197/2197 [==============================] - 1927s 877ms/step - loss: 0.0014 - accuracy: 0.9996 - val_loss: 0.0079 - val_accuracy: 0.9980 - lr: 2.0000e-04 Epoch 10/50 2197/2197 [==============================] - ETA: 0s - loss: 0.0010 - accuracy: 0.9997 Epoch 10: ReduceLROnPlateau reducing learning rate to 4.0000001899898055e-05. 2197/2197 [==============================] - 1927s 877ms/step - loss: 0.0010 - accuracy: 0.9997 - val_loss: 0.0081 - val_accuracy: 0.9983 - lr: 2.0000e-04 Epoch 11/50 2197/2197 [==============================] - 1925s 876ms/step - loss: 8.8545e-04 - accuracy: 0.9998 - val_loss: 0.0078 - val_accuracy: 0.9982 - lr: 4.0000e-05
In [21]:
feature_model.load_weights(checkpoint_path)
Out[21]:
<tensorflow.python.checkpoint.checkpoint.CheckpointLoadStatus at 0x1ff5dbb9c90>
In [22]:
feature_model.evaluate(test_data)
550/550 [==============================] - 344s 620ms/step - loss: 0.0073 - accuracy: 0.9984
Out[22]:
[0.007274392060935497, 0.9984065294265747]
In [48]:
def load_prep(img_path):
img = tf.io.read_file(img_path)
img = tf.image.decode_image(img)
img = tf.image.resize(img,size=(224,224))
return img
In [51]:
image = load_prep(r'E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\test\test\AppleCedarRust1.JPG')
plt.imshow(image/255.)
plt.title('AppleCedarRust1.JPG')
plt.suptitle(image.shape)
Out[51]:
Text(0.5, 0.98, '(224, 224, 3)')
In [52]:
pred = feature_model.predict(tf.expand_dims(image,axis=0))
pred
1/1 [==============================] - 1s 1s/step
Out[52]:
array([[2.8146506e-18, 5.8862948e-19, 1.0000000e+00, 4.1395038e-34,
2.1517241e-23, 3.2229669e-32, 2.1334065e-32, 5.2606758e-22,
1.0763121e-21, 0.0000000e+00, 1.4734510e-38, 1.9950224e-29,
4.2448107e-31, 1.3996006e-27, 1.2440141e-27, 1.4234787e-30,
3.6722141e-26, 1.0077134e-28, 2.8983498e-35, 1.7651298e-33,
4.5817430e-30, 8.9002956e-38, 5.5475660e-31, 2.2018335e-32,
4.0321307e-37, 5.5389388e-31, 5.9936374e-31, 4.5195625e-30,
1.6416403e-32, 1.7834741e-31, 4.5583820e-30, 4.0279935e-38,
0.0000000e+00, 0.0000000e+00, 6.3605510e-26, 5.7944998e-36,
2.1494029e-30, 4.6401648e-34]], dtype=float32)
In [53]:
predicted_value = class_names[pred.argmax()]
predicted_value
Out[53]:
'Apple___Cedar_apple_rust'
In [54]:
def random_image_predict(model,test_dir=test_dir,class_names=class_names,rand_class=True,cls_name=None):
if rand_class==True:
ran_cls = random.randint(0,len(class_names))
cls = class_names[ran_cls]
ran_path = test_dir +'/'+ cls+ '/'+ random.choice(os.listdir(test_dir+'/'+cls))
else:
cls = class_names[cls_name]
ran_path = test_dir +'/'+ cls + '/'+ random.choice(os.listdir(test_dir+'/'+cls))
prep_img = load_prep(ran_path)
pred = model.predict(tf.expand_dims(prep_img,axis=0))
pred_cls = class_names[pred[0].argmax()]
pred_percent = pred[0][pred[0].argmax()]*100
plt.imshow(prep_img/255.)
if pred_cls == cls:
c = 'g'
else:
c = 'r'
plt.title(f'actual:{cls},\npred:{pred_cls},\nprob:{pred_percent:.2f}%',color = c ,fontdict={'fontsize':10})
plt.axis(False)
In [55]:
random_image_predict(feature_model)
1/1 [==============================] - 0s 42ms/step
In [57]:
plt.figure(figsize=(15,15))
for i in range(9):
plt.subplot(3,3,i+1)
random_image_predict(feature_model,test_dir)
1/1 [==============================] - 0s 40ms/step 1/1 [==============================] - 0s 63ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 52ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 40ms/step
In [58]:
data_dir=r'E:\MINICONDA_FILES\PROJECT3\new-plant-diseases-dataset\New Plant Diseases Dataset(Augmented)\test\test'
plt.figure(figsize=(15,10))
for i in range(9):
plt.subplot(3,3,i+1)
rn = random.choice(os.listdir(data_dir))
image_path=os.path.join(data_dir,rn)
img = load_prep(image_path)
pred = feature_model.predict(tf.expand_dims(img,axis=0))
pred_name = class_names[pred.argmax()]
plt.imshow(img/255.)
plt.title(f'true:{rn} \npred_class:{pred_name}')
plt.axis(False)
1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 58ms/step 1/1 [==============================] - 0s 57ms/step 1/1 [==============================] - 0s 55ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step 1/1 [==============================] - 0s 47ms/step